package net.lcheng.service;

import net.lcheng.commons.utils.PageList;
import net.lcheng.model.User;
import net.lcheng.vo.WxAccessTokenModel;
import net.lcheng.vo.WxUserInfoModel;

import java.math.BigDecimal;
import java.util.Date;

/**
 * Created by zwr on 2016/6/28 0028.
 */
public interface UserService {
    /***
     * 根据手机号或OpenId获取用户信息(qiliping:2016-3-29)
     *
     * @param word
     * @return
     */
    User getUserByPhoneOrOpenId(String word);

    /***
     * 根据OpenId获取用户信息-微信登录用(qiliping)
     * @param openId
     * @return
     */
    User getUserByOpenId(String openId);

    /***
     * 新增微信用户(qiliping)
     * @param token
     * @param wxUser
     * @return
     */
    int insertWxUser(WxAccessTokenModel token, WxUserInfoModel wxUser);

    /***
     * 更新微信用户资料(qiliping)
     * @param userId
     * @param token
     * @param wxUser
     * @return
     */
    int updateWxUser(String userId, WxAccessTokenModel token, WxUserInfoModel wxUser);

    /***
     * 根据手机号获取用户
     *
     * @param phone
     * @return
     */
    User getUserByPhone(String phone);

    /***
     * 新增用户
     *
     * @param user
     * @return
     */
    int insert(User user);

    /***
     * 修改密码
     *
     * @param userId
     * @param password
     * @return
     */
    int updatePassword(String userId, String password);

    User getUserByUserId(String userId);

    /***
     * 修改手机号码和密码
     *
     * @param userId
     * @param userPhone userPwd
     * @return zwr
     */
    int updatePassword(String userId, String userPwd, String userPhone);

    /***
     * 修改手机号码
     *
     * @param userId
     * @param userPhone
     * @return
     */
    int updatePhone(String userId, String userPhone);

    /**
     * 根据userId获取当前手机
     *
     * @param phone
     * @param userId
     * @return
     */
    User getUserByPhoneByUserId(String phone, String userId);

    /***
     * 修改用户名
     *
     * @param userId
     * @param userName
     * @return
     */
    int updateName(String userId, String userName);

    /***
     * 获取会员列表
     *
     * @param pageIndex
     * @param pageSize
     * @param userName
     * @param sdate
     * @param edate
     * @return
     */
    PageList<User> setUserList(Integer pageIndex, Integer pageSize, String userName, Date sdate, Date edate);


    int updateAccountBalance(String userId, BigDecimal accountBalance);
}
